package com.zmn.oms.services.interfaces.master;

import com.zmn.oms.model.entity.master.OrderMaster;

import java.util.List;

/**
 * 类描述：工单工程师
 *
 * @author lujia
 * @date 2018/11/03 16:45
 */
public interface OrderMasterService {

    /**
     * 通过工单id查询工程师列表
     *
     * @param workId 工单id
     * @return 工程师列表
     */
    List<OrderMaster> listMasterByWorkId(Long orderId, Long workId);

    /**
     * 主库查询
     * @param orderId
     * @param workId
     * @param type
     * @return
     */
    List<OrderMaster> listMasterByWorkIdSrcMaster(Long orderId, Long workId, Integer type);


    /**
     * 通过工单id查询工程师列表
     *
     * @param workId 工单id
     * @return 工程师列表
     */
    List<OrderMaster> listMasterByWorkId(Long orderId, Long workId, Integer type);

    /**
     * 根据订单id集合查询工程师列表
     *
     * @param orderIdList 订单id集合
     * @return 工程师集合
     */
    List<OrderMaster> listMasterByOrderIdList(List<Long> orderIdList);

    /**
     * 通过工程师id列表查询工程师列表
     *
     * @param workId 工单id
     * @return 工程师列表
     */
    List<OrderMaster> listMasterByMasterIdList(Long orderId, Long workId, List<Integer> masterIdList);

    /**
     * 新增工程师
     *
     * @param orderMaster
     * @return
     */
    int insertOrderMaster(OrderMaster orderMaster);

    /**
     * 批量新增工程师
     *
     * @param orderMasters
     * @return
     */
    int insertAll(List<OrderMaster> orderMasters);

    /**
     * 删除工单工程师
     *
     * @param orderId 订单ID
     * @param workId  工单ID
     * @param type    工程师类型
     */
    int deleteMaster(Long orderId, Long workId, Integer type);

    /**
     * 删除工单工程师
     *
     * @param orderId 订单ID
     * @param workId  工单ID
     * @param masterId    工程师类型
     */
    int deleteMasterByMasterId(Long orderId, Long workId, Integer masterId);

    /**
     * 根据工程师ID列表删除
     *
     * @param orderId         订单ID
     * @param workId          工单ID
     * @param type            类型
     * @param masterIdList    工程师ID列表
     */
    int deleteMasterByMasterIdList(Long orderId, Long workId, Integer type, List<Integer> masterIdList);

    /**
     * 更新工程师分润信息
     *
     * @param master         工程师信息
     */
    int updateMasterShare(OrderMaster master);
}
